Integrated circuits (ICs) are developed in order to process information. Every IC has at least one input and at least one output. An IC receives input data, processes the data and then produces the result. In many cases, ICs are defined by means of high-level languages such as the C++ programming language. One type of ICs, called a processor, is capable of executing programs that are written using a special language consisting of small simple commands instead of the C++ programming language. A language that consists of simple commands is defined as a processor language, and a program written in a processor language is defined as a processor program.
For example, the following C++ command:                Z=A+B+Cmay be presented as a sequence of simple commands that can be processed by a processor IC:        1. Take A.        2. Take B.        3. Evaluate A+B.        4. Take C.        5. Evaluate (A+B)+C.        6. Move the result to Z.        
It is easy to see that the result of such a presence of any C++ command is the sequence of several simple commands. In the above example, one C++ command is translated into 6 simple commands. Consequently, if a processor executes one simple command per one clock cycle, it may take 6 clock cycles to execute the considered C++ command. Thus, one of the most important problems is to minimize the time for a processor to execute a C++ program and to minimize the size of a processor program.
Thus, it would be desirable to provide a processor language that allows some simple commands be carried out in parallel. This parallel processor language may consist of very small number of different commands so that the processor IC that executes these commands is easy to create, and the processor IC may have a small area and may be able to execute commands with high speed or high frequency. Moreover, it would also be desirable to provide a method for translating a C++ program into a parallel processor program, which method may minimize the size of the obtained processor program.
A processor program loaded to a processor may be written in two different ways: (1) the program may be first written in some high-level programming language like C++, Pascal, etc., and the program may be then translated into the processor language; and (2) the program may be written in a processor language manually. In either case, it would be desirable to provide a method (e.g., an algorithm, and the like) that allows the execution time of a processor program to be optimized (e.g., minimized). That is, it would be desirable to provide a method for optimizing execution time of a processor program written in a parallel processor language, which method may receive a processor program, optimize this program and output a resulted program that is functionally equivalent to the original one but has reduced execution time.